package com.gzc.just.play.last.war.sceneserver.ai;

import com.gzc.just.play.last.war.sceneserver.gameobject.unit.GameUnit;

/**
 * 条件节点 - 用于条件判断
 * 
 * 映射自C++ ConditionNode
 * 返回条件是否满足
 * 
 * @author AI编程助手
 * @version 1.0
 */
public abstract class ConditionNode extends BehaviorNode {
    
    /**
     * 构造函数
     * 
     * @param name 节点名称
     */
    public ConditionNode(String name) {
        super(name, NodeType.CONDITION);
    }
    
    /**
     * 条件判断逻辑
     * 子类必须重写该方法
     * 
     * @param unit 游戏单位
     * @param deltaTime 时间差（毫秒）
     * @return 条件是否满足（SUCCESS表示满足，FAILURE表示不满足）
     */
    @Override
    public abstract Result tick(GameUnit unit, long deltaTime);
    
    /**
     * 检查条件是否满足
     * 
     * @param unit 游戏单位
     * @return 是否满足
     */
    public boolean checkCondition(GameUnit unit) {
        Result result = tick(unit, 0);
        return result == Result.SUCCESS;
    }
}
